import linkedlist.LinkedList;
import linkedlist.ListNode;

import javax.xml.soap.Node;
import java.io.File;

public class Main {

    public static void main(String[] args) {
        //System.out.println("Hello World!");

//        MyArray<Integer> array = new MyArray(20);
//        for (int i = 0; i < 10 ; i++) {
//            array.addLast(i);
//        }
//
//        System.out.println(array.toString());

//        float a = 0.123456789f;
//        float b = 0.123456788f;
//        System.out.println(a==b);
          ListNode node1 = new ListNode(1);
          node1.add(2);
          node1.add(5);
          System.out.println("元素个数为：" + node1.size);
          node1.loop(node1.size);

    }

    public int sum(int[] arr){
        //递归求和
        return sum(arr,0);

    }

    //返回当前元素和后一元素的和
    private int sum(int[] arr,int index){
        if(index == arr.length){
            //数组已经递归完，可以退出了
            return 0;
        }

        int x = sum(arr,index+1);   //递归
        int sum = arr[index] + x;
        return sum;
    }


    public static void traverseArray(int[] arr,int index){
        if(index == arr.length){
            //表示数组遍历完毕，需要退出
            return ;
        }
        System.out.println(arr[index]);
        traverseArray(arr,index+1);
    }

    public static void traverseDirector(String path){
        //获取D盘下的所有文件名
        File file = new File(path);
        traverseDirector(file);
    }

    //打印当前目录下的所有文件的文件名
    private static void traverseDirector(File file){

        if(!file.isDirectory()){
            System.out.println(file.getName());
            return;
        }

        System.out.println(file.getName());
        //获取当前目录下的所有文件
        for(File f : file.listFiles()){
            traverseDirector(f);
        }
    }

    //数组递归，找出最大值
    //返回值是当前元素和下一元素中更大的元素
    public static int findMax(int[] arr,int i){

        //递归结束条件，比较到最后一位有效元素
        if(i == arr.length-1){
            return arr[i];
        }

        int max = findMax(arr,i+1);
        if(arr[i] >= max){
            return arr[i];
        }else {
            return max;
        }
    }

    //递归求阶乘
    //返回值为阶乘的值
    public static int factoria(int num){
        if(num == 1){
            return 1;
        }

        int x = num * factoria(num-1);
        return x;
    }


    //链表增加节点，使用递归
    //返回值是当前新增的节点的上一节点
    // 1 - 2 - null
    public static void nodeAdd(ListNode node,int val){
        if(node.next == null){
            ListNode cur = new ListNode(val);
            node.next = cur;
            return ;
        }

        nodeAdd(node.next,val);
    }




}
